# -*- coding: utf-8 -*-
from Tkinter import *
from xTkinter import *

import xmlrpclib

class CalculSalaire(Frame):
    def __init__(self,master,parent):      
        #frame = Frame(width=768, height=300, bg="gray", colormap="new")
        Frame.__init__(self,master)
        self.initServeur()
        #self.ComboSemaine=xCombobox(self,width=8)
        self.parent =parent
        f=Frame(master)
        f.configure(width=800,height=100)
        f.grid(row=0,column=3)
        self.listId=[]
        self.comboId=xCombobox(f,width=20)
        self.comboId.setLocation(100,0)
        self.comboId.setListWidth(30)
        self.comboId.setListHeight(3) 
        
        #requette pour aller chaer le ID des employés afin de pouvoir faire un choix
        requet="select id from s_emp"
        #rep=self.parent.serveur.ExecuterRequeteSQLWhere(requet)
        rep=self.serveur.ExecuterRequeteSQLWhere(requet)
        
        #requette pour aller chercher le salaire des employés
        #requetSalaire="select salary from s_emp were "
        

        if(rep[0]==1):
            list =rep[1]
            for i in list:              
                self.comboId.addItem(str(i[0]))
        else:
            print "reponse",rep[1]
            
        """self.comboId.addItem("test1")
        maliste=['1','2']  
        self.comboId.addItems(maliste)
        self.comboId.addItems(["test2","test3"])        
        """
        
        self.comboId.setValidator(self.test)
        
        labeNAS=Label(parent, text="NAS").grid(row=0)
        labeNom=Label(parent, text="Nom").grid(row=1)
        labeSalaire=Label(parent, text="Salaire").grid(row=2)
        labeSalaire=Label(parent, text="Autres revenus").grid(row=3)
        labePaye=Label(parent, text="Avantages imposables").grid(row=4)
        
        labeRevenuTotal=Label(parent, text="revenus total: ").grid(row=5)
        labeVide=Label(parent, text="").grid(row=6)
        labePaye=Label(parent, text="Periode Paye (26/52 sem.)").grid(row=7)
        impotProv=Label(parent, text="RAS(Impot provincial)").grid(row=8)
        impotFed=Label(parent, text="RAS (Impot federal)").grid(row=9)
        lebelRQAP=Label(parent, text="RQAP").grid(row=10)
        lebelAE=Label(parent, text="Assurance Emploi").grid(row=11)
        lebelRRQ=Label(parent, text="RRQ: ").grid(row=12)
        lebelDeduction=Label(parent, text="deduction total: ").grid(row=13)
        #lebelVide=Label(parent, text="").grid(row=13)
        lebelVide=Label(parent, text="").grid(row=14)
        lebelVide=Label(parent, text="Salaire net: ").grid(row=15)
        
        
        self.entryNAS = Entry(parent)
        self.entryNAS.grid(row=0, column=1)
        
        self.entryNom = Entry(parent)
        self.entryNom.grid(row=1, column=1)
        
        self.entrySalaire=Entry(parent)
        self.entrySalaire.grid(row=2,column=1)
        
        self.eAutresRevenus = Entry(parent)
        self.eAutresRevenus.grid(row=3, column=1)
        
        self.eAvantages = Entry(parent)
        self.eAvantages.grid(row=4, column=1)
        
        self.entryRevTotal = Entry(parent)
        self.entryRevTotal.grid(row=5, column=1)
        
        self.ePeriodePaye = Entry(parent)
        self.ePeriodePaye.grid(row=7, column=1)
        
        self.eImpotProv = Entry(parent)
        self.eImpotProv.grid(row=8,column=1)
        
        self.eImpotFed = Entry(parent)
        self.eImpotFed.grid(row=9,column=1)
        
        self.eRQAP = Entry(parent)
        self.eRQAP.grid(row=10,column=1)
        
        self.eAE = Entry(parent)
        self.eAE.grid(row=11,column=1)
        
        self.eRRQ = Entry(parent)
        self.eRRQ.grid(row=12,column=1)
        
        self.ededTotal = Entry(parent)
        self.ededTotal.grid(row=13,column=1)
        
        
        
        #self.initNAS("222 248 000")
        #self.initNnom("Mounia")
            
       # frame.pack()
        #s = e.get()
     #cette fonction va chercher le saire d'un employ� de la BD  
     
      
    def rechSalaire(self,id):
        requet="select salary from s_emp where id="+id
        #rep=self.parent.serveur.ExecuterRequeteSQL(requet)
        rep=self.serveur.ExecuterRequeteSQLWhere(requet)

        if(rep[0]==1):
            self.salaire =rep[1][0][0]
            self.entrySalaire.insert(0,self.salaire)
        else:
            print "reponse",rep[1]
        return self.salaire
            
    #cette fonction permet d'aller chercher les autres revenus de l'employé        
    def RechAutresRev(self, id):
        self.comm=0
        requette="select commission_pct from s_emp where id="+id
        rep=self.serveur.ExecuterRequeteSQLWhere(requette)
        if(rep[0]==1):
            self.comm=rep[1][0][0]
        else:
            print "pas de commission pour cet employé",rep[1]
        return self.comm
    
    
    #cette methode fait la recherche du montants total  de revenus qu'à vendu le vendeur choisi
    def rechventeTotal(self, id):
        self.revComm=0
        requette2="select sum(total) from s_ord where seles_rep_id="+id
        rep2=self.serveur.ExecuterRequeteSQLWhere(requette2)
        if(rep2[0]==1):
            self.revComm=rep[1][0][0]
        else:
            print"pas de commande pour ce vendeur",rep2[1]
        return self.revComm
            
        
            
    #cette methode recher les in fos sur l'employé
    def rechercheNom(self, id):
        req="select last_name ||' ' || first_name from s_emp where id="+id
        reponse=self.serveur.ExecuterRequeteSQLWhere(req)
        
        if(reponse[0]==1):
            self.nomPrenom =reponse[1][0][0]
            self.entryNom.insert(0, self.nomPrenom)
        else:
            print "nom inconnu de la table; reponse: ",rep[1]
            
   #cette methode fait le calcul  du revenu total
    #def calculerRevTotal(self,id):
        
        
            
    def test(self):
        tauxComm=0
        venteTot=0
        sal=self.rechSalaire(self.comboId.getText())
        self.rechercheNom(self.comboId.getText())
        tauxComm=self.RechAutresRev(self.comboId.getText())
        venteTot=self.rechventeTotal(self.comboId.getText())
        if(tauxComm<>None):
            revVente=venteTot*tauxComm
        else:
            revVente=0  
        #calcul du revenu et des taxes à payer en fonction du revenu par semaine ou au 2 semaines        
        revTot =sal+revVente    
        self.entryRevTotal.insert(0,revTot)
        nbSemainePaie=self.ePeriodePaye.get()
        revenuSem=revTot/nbSemainePaie
        impotFed=revenuSem*0,06
        
    
    
    
    def initServeur(self):        
        PortServeur=':8000'
        Serveur='http://localhost:8000'
        self.serveur=xmlrpclib.ServerProxy(Serveur)
        pass                
            
    def initNAS(self, NAS):
        self.entryNAS.insert(0, NAS)
        
    def initNnom(self, nom):
        self.entryNom.insert(1, nom)
       
    def initialiser(self,salaire,commission,AutresAv, revenuTot, revenuNet, deducTotal):
        self.entrySalaire.insert(2, salaire)
        self.eAutresRevenus.insert(3,commission)
        self.eAvantages.insert(4, AutresAv)
        revenuTot=salaire+commission+AutresAv
        nbSemainePaie=self.ePeriodePaye.get()
        self.entryRevTotal.insert(5, revenuTot)
        revenuSem=revenuTot/nbSemainePaie
        
        impotFed=revenuSem*0,06
        self.eImpotFed.insert(9, impotFed)
        impProv=revenuSem*1,06*0,075
        self.eImpotProv.insert(8, impProv)
        assEmp=revenuSem*1.38
        self.eAE.insert(11, assEmp)
        RegRQ = revenuSem*4,95
        self.eRRQ.insert(12, RegRQ)
        decdTot=impotFed+impProv+eAE+RegRQ
        self.ededTotal.insert(13,decdTot)
        #self.e.insert(index, string)
        
        
        
       
        
        
        
    
   

if __name__ == '__main__':    
    root=Tk()
    root.geometry('600x400')
    vue=CalculSalaire(root,None)
    root.mainloop()       